package com.fansl.allround.auth.provider.social;

import com.fansl.allround.auth.dto.BindSocialUser;
import com.fansl.allround.auth.dto.ExistSocialUser;
import com.fansl.allround.common.core.bean.UserInfo;
import com.fansl.allround.common.core.constant.enums.OauthTypeEnum;
import org.springframework.security.core.Authentication;
import org.springframework.stereotype.Service;

/**
 * @author fansl
 * @Description: TODO
 * @date 2019/10/17 15:29
 */
@Service
public interface SocialUserSignUp {

    /**
     * 注册用户
     *
     * @param authentication
     * @return
     */
    UserInfo registerSocialUser(Authentication authentication);

    /**
     * 检查用户是否存在
     *
     * @param oauthType
     * @param code
     * @return
     */
    ExistSocialUser existUser(OauthTypeEnum oauthType, String code);

    /**
     * 验证用户手机号，绑定第三方应用
     *
     * @param param
     * @return
     */
    Boolean bindSocialUser(BindSocialUser param);

    /**
     * 绑定第三方平台应用
     *
     * @param userId  用户ID
     * @param oauthId 三方平台类型
     * @param code    三方平台code
     * @return true/false
     */
    Boolean bindSocialUser(Integer userId, Integer oauthId, String code);

    /**
     * 解绑第三方平台应用
     *
     * @param userId  用户ID
     * @param oauthId 三方平台类型
     * @return true/false
     */
    Boolean unbindSocialUser(Integer userId, Integer oauthId);
}
